
using MiniExcelLibs;
using ZR.Model.System.Enums;

namespace ZR.Model.ProdManage.Dto
{
    /// <summary>
    /// 生产计划查询对象
    /// </summary>
    public class ProdPlanQueryDto : PagerInfo
    {
        /// <summary>
        /// 计划编号 
        /// </summary>
        public string PlanNo { get; set; }
        /// <summary>
        /// 来源计划号 
        /// </summary>
        public string SourceCode { get; set; }
        /// <summary>
        /// DMS订单 
        /// </summary>
        public string DmsOrderNo { get; set; }
        /// <summary>
        /// 产品编号 
        /// </summary>
        public string ItemNo { get; set; }
        /// <summary>
        /// 状态 
        /// </summary>
        public string Status { get; set; }
    }

    /// <summary>
    /// 生产计划输入输出对象
    /// </summary>
    public class ProdPlanDto
    {
        /// <summary>
        /// 计划编号 
        /// </summary>
        [Required(ErrorMessage = "计划编号不能为空")]
        [ExcelColumn(Name = "计划编号")]
        [ExcelColumnName("计划编号")]
        public string PlanNo { get; set; }

        /// <summary>
        /// 来源计划号 
        /// </summary>
        [ExcelColumn(Name = "来源计划号")]
        [ExcelColumnName("来源计划号")]
        public string SourceCode { get; set; }

        /// <summary>
        /// DMS订单 
        /// </summary>
        [Required(ErrorMessage = "DMS订单不能为空")]
        [ExcelColumn(Name = "DMS订单")]
        [ExcelColumnName("DMS订单")]
        public string DmsOrderNo { get; set; }

        /// <summary>
        /// 产品编号 
        /// </summary>
        [Required(ErrorMessage = "产品编号不能为空")]
        [ExcelColumn(Name = "产品编号")]
        [ExcelColumnName("产品编号")]
        public string ItemNo { get; set; }

        /// <summary>
        /// 产品类型 
        /// </summary>
        [Required(ErrorMessage = "产品类型不能为空")]
        [ExcelColumn(Name = "产品类型")]
        [ExcelColumnName("产品类型")]
        public string ItemType { get; set; }

        /// <summary>
        /// 客户 
        /// </summary>
        [ExcelColumn(Name = "客户")]
        [ExcelColumnName("客户")]
        public string Customer { get; set; }

        /// <summary>
        /// 出口国家 
        /// </summary>
        [ExcelColumn(Name = "出口国家")]
        [ExcelColumnName("出口国家")]
        public string Country { get; set; }

        /// <summary>
        /// 配置 
        /// </summary>
        [ExcelColumn(Name = "配置")]
        [ExcelColumnName("配置")]
        public string Configuration { get; set; }

        /// <summary>
        /// 数量 
        /// </summary>
        [Required(ErrorMessage = "数量不能为空")]
        [ExcelColumn(Name = "数量")]
        [ExcelColumnName("数量")]
        public decimal Qty { get; set; }

        /// <summary>
        /// 客户地址 
        /// </summary>
        [ExcelColumn(Name = "客户地址")]
        [ExcelColumnName("客户地址")]
        public string Address { get; set; }

        /// <summary>
        /// 计划包装时间 
        /// </summary>
        [ExcelColumn(Name = "计划包装时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("计划包装时间")]
        public DateTime? PlanTime { get; set; }

        /// <summary>
        /// 状态 
        /// </summary>
        [ExcelColumn(Name = "状态")]
        [ExcelColumnName("状态")]
        public string Status { get; set; }

        /// <summary>
        /// MES发送状态 
        /// </summary>
        [ExcelColumn(Name = "MES发送状态")]
        [ExcelColumnName("MES发送状态")]
        public int? SendStatus { get; set; }

        /// <summary>
        /// QMS发送状态 
        /// </summary>
        [ExcelColumn(Name = "QMS发送状态")]
        [ExcelColumnName("QMS发送状态")]
        public int? QmsSendStatus { get; set; }

        /// <summary>
        /// 创建人 
        /// </summary>
        [ExcelColumn(Name = "创建人")]
        [ExcelColumnName("创建人")]
        public string CreateBy { get; set; }

        /// <summary>
        /// 创建时间 
        /// </summary>
        [ExcelColumn(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("创建时间")]
        public DateTime? CreateTime { get; set; }

        /// <summary>
        /// 更新人 
        /// </summary>
        [ExcelColumn(Name = "更新人")]
        [ExcelColumnName("更新人")]
        public string UpdateBy { get; set; }

        /// <summary>
        /// 更新时间 
        /// </summary>
        [ExcelColumn(Name = "更新时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("更新时间")]
        public DateTime? UpdateTime { get; set; }

        /// <summary>
        /// 备注 
        /// </summary>
        [ExcelColumn(Name = "备注")]
        [ExcelColumnName("备注")]
        public string Remark { get; set; }
    }


    /// <summary>
    /// 推送计划信息对象
    /// </summary>
    public class WmsPlanDto
    {
        /// <summary>
        /// DMS订单号
        /// </summary>
        public string dmsOrderNo { get; set; }

        /// <summary>
        /// 计划号
        /// </summary>
        public string planNo { get; set; }

        /// <summary>
        /// 产品类型
        /// </summary>
        public string itemType { get; set; }

        /// <summary>
        /// 产品编号
        /// </summary>
        public string itemNo { get; set; }
        
        /// <summary>
        /// 客户
        /// </summary>
        public string customer { get; set; }

        /// <summary>
        /// 国家
        /// </summary>
        public string country { get; set; }

        /// <summary>
        /// 配置
        /// </summary>
        public string configuration { get; set; }

        /// <summary>
        /// 数量
        /// </summary>
        public decimal qty { get; set; }

        /// <summary>
        /// 计划包装时间
        /// </summary>
        public DateTime planTime { get; set; }

        /// <summary>
        /// 状态:0生成,1需求发布2取消
        /// </summary>
        public string status { get; set; }

        /// <summary>
        /// MES发送状态(0:未发送,1:发送成功,2:发送失败,3:无需发送)
        /// </summary>
        public int sendStatus { get; set; }

        /// <summary>
        /// QMS发送状态(0:未发送,1:发送完成,2:发送失败,3:发送中)
        /// </summary>
        public int qmsSendStatus { get; set; }

        /// <summary>
        /// 客户地址
        /// </summary>
        public string address { get; set; }


    }
}